package com.yuanss.backenddemo.service;

import com.yuanss.backenddemo.common.R;
import com.yuanss.backenddemo.entity.dto.LogInResultDto;
import com.yuanss.backenddemo.entity.dto.LoginDto;
import com.yuanss.backenddemo.entity.po.SysUser;
import com.yuanss.backenddemo.entity.vo.req.AddUserReqVo;
import com.yuanss.backenddemo.entity.vo.req.UpdateUserReqVo;
import com.yuanss.backenddemo.entity.vo.rsp.QueryUserDetailRspVo;
import com.yuanss.backenddemo.entity.vo.req.QueryUserReqVo;

import java.util.List;
import java.util.Map;

/**
 * @author yuanss
 * @version 1.0
 * @description 系统用户服务接口
 * @date 2024/6/8 22:05:35
 */
public interface SysUserService {
    /**
     * 添加用户
     */
    R addUser(AddUserReqVo addUserReqVo);

    /**
     * 删除用户
     */
    R deleteUser(Long userIds);

    /**
     * 更新用户
     */
    R updateUser(UpdateUserReqVo updateUserReqVo);

    /**
     * 查询用户详情
     */
    R<QueryUserDetailRspVo> queryUser(Long userId);

    /**
     * 查询所有用户
     */
    R<List<SysUser>> queryAllUser(QueryUserReqVo queryUserReqVo);

    /**
     * 更新用户状态
     */
    R changeStatus(Long userId);

    /**
     * 校验用户名是否唯一
     */
    boolean checkUserNameUnique(UpdateUserReqVo updateUserReqVo);

    /**
     * 校验手机号是否唯一
     */
    boolean checkPhoneUnique(UpdateUserReqVo updateUserReqVo);

    /**
     * 校验邮箱是否唯一
     */
    boolean checkEmailUnique(UpdateUserReqVo updateUserReqVo);

    LogInResultDto verify(LoginDto loginDto);
}
